﻿<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="MainSchema"
    targetNamespace="http://tempuri.org/MainSchema.xsd"
    elementFormDefault="qualified"
    xmlns="http://tempuri.org/MainSchema.xsd"
    xmlns:mstns="http://tempuri.org/MainSchema.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
  <xs:element name="LiveCode">
    <xs:complexType>
      <xs:choice>
        <xs:element name="Login">
          <xs:complexType>
            <xs:all>
              <xs:element name="Username" type="xs:string"/>
              <xs:element name="Password" type="xs:string"/>
              <xs:element name="User">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="UserID">
                      <xs:simpleType>
                        <xs:restriction base="xs:integer">
                          <xs:minInclusive value="1"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="Projects">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="Project" maxOccurs="unbounded">
                            <xs:complexType>
                              <xs:all>
                                <xs:element name="ID" type="xs:string"/>
                                <xs:element name="Name" type="xs:string"/>
                              </xs:all>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:all>
                </xs:complexType>
              </xs:element>
            </xs:all>
          </xs:complexType>
        </xs:element>
        <xs:element name="Logout"/>
        <xs:element name="ProjectLogin">
          <xs:complexType>
            <xs:all>
              <xs:element name="UserID">
                <xs:simpleType>
                  <xs:restriction base="xs:integer">
                    <xs:minInclusive value="1"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="ProjectID">
                <xs:simpleType>
                  <xs:restriction base="xs:integer">
                    <xs:minInclusive value="1"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
            </xs:all>
          </xs:complexType>
        </xs:element>
        <xs:element name="Ports">
          <xs:complexType>
            <xs:choice>
              <xs:all>
                <xs:element name="SlowSend">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="PortNum">
                      <xs:simpleType>
                        <xs:restriction base="xs:integer">
                          <xs:minInclusive value="0"/>
                          <xs:maxInclusive value="65535"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:all>
                </xs:complexType>
              </xs:element>
                <xs:element name="SlowRecieve">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="PortNum">
                      <xs:simpleType>
                        <xs:restriction base="xs:integer">
                          <xs:minInclusive value="0"/>
                          <xs:maxInclusive value="65535"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:all>
                </xs:complexType>
              </xs:element>
                <xs:element name="QuickSend">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="PortNum">
                      <xs:simpleType>
                        <xs:restriction base="xs:integer">
                          <xs:minInclusive value="0"/>
                          <xs:maxInclusive value="65535"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:all>
                </xs:complexType>
              </xs:element>
                <xs:element name="QuickRecieve">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="PortNum">
                      <xs:simpleType>
                        <xs:restriction base="xs:integer">
                          <xs:minInclusive value="0"/>
                          <xs:maxInclusive value="65535"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:all>
                </xs:complexType>
              </xs:element>
              </xs:all>
              <xs:element name="ReadyForConnect"/>
            </xs:choice>
          </xs:complexType>
        </xs:element>
        <xs:element name="Project">
          <xs:complexType>
            <xs:all>
              <xs:element name="ClientLocation" type="xs:string"/>
              <xs:element name="RelativePaths">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="FilePath" type="xs:string" maxOccurs="unbounded"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:all>
            <xs:attribute name="id" use="required">
              <xs:simpleType>
                <xs:restriction base="xs:integer">
                  <xs:minInclusive value="1"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="name" type="xs:string" use="required"/>
          </xs:complexType>
        </xs:element>
        <xs:element name="Chat">
          <xs:complexType>
            <xs:choice>
              <xs:element name="UserLogon">
                <xs:complexType>
                  <xs:attribute name="id" use="required">
                    <xs:simpleType>
                      <xs:restriction base="xs:integer">
                        <xs:minInclusive value="1"/>
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:attribute>
                  <xs:attribute name="name" type="xs:string" use="required"/>
                </xs:complexType>
              </xs:element>
              <xs:element name="UserLogoff">
                <xs:complexType>
                  <xs:attribute name="id">
                    <xs:simpleType>
                      <xs:restriction base="xs:integer">
                        <xs:minInclusive value="1"/>
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:attribute>
                </xs:complexType>
              </xs:element>
              <xs:element name="Message">
                <xs:complexType>
                  <xs:attribute name="toID" use="required">
                    <xs:simpleType>
                      <xs:restriction base="xs:integer">
                        <xs:minInclusive value="1"/>
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:attribute>
                  <xs:attribute name="fromID" use="required">
                    <xs:simpleType>
                      <xs:restriction base="xs:integer">
                        <xs:minInclusive value="1"/>
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:attribute>
                  <xs:attribute name="text" type="xs:string" use="required"/>
                </xs:complexType>
              </xs:element>
            </xs:choice>
          </xs:complexType>
        </xs:element>
        <xs:element name="Text">
          <xs:complexType>
            <xs:attribute name="seq" use="required">
              <xs:simpleType>
                <xs:restriction base="xs:integer">
                  <xs:minInclusive value="0"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="UserID" use="required">
              <xs:simpleType>
                <xs:restriction base="xs:integer">
                  <xs:minInclusive value="1"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="RelativePath" type="xs:string" use="required"/>
            <xs:attribute name="iStartLine" use="required">
              <xs:simpleType>
                <xs:restriction base="xs:integer">
                  <xs:minInclusive value="0"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="iStartIndex" use="required">
              <xs:simpleType>
                <xs:restriction base="xs:integer">
                  <xs:minInclusive value="1"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="iNewEndLine" use="required">
              <xs:simpleType>
                <xs:restriction base="xs:integer">
                  <xs:minInclusive value="1"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="iNewEndIndex" use="required">
              <xs:simpleType>
                <xs:restriction base="xs:integer">
                  <xs:minInclusive value="1"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="iOldEndLine" use="required">
              <xs:simpleType>
                <xs:restriction base="xs:integer">
                  <xs:minInclusive value="1"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="iOldEndIndex" use="required">
              <xs:simpleType>
                <xs:restriction base="xs:integer">
                  <xs:minInclusive value="1"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="text" type="xs:string" use="required"/>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>